#! /usr/bin/env python3
# -*- coding: utf-8 -*-

'''
高阶函数
'''

# 函数式编程的一个特点就是，允许把函数本身作为参数传入另一个函数，还允许返回一个函数
# Python对函数式编程提供部分支持。由于Python允许使用变量，因此，Python不是纯函数式编程语言。

# 1. 变量可以指向函数
r = abs(-10)
print(r)
print(abs)
# 可以将函数赋值给变量， 使变量成为函数： 变量可以指向函数
x = abs

print(x(-9))

# 函数名也是变量， 函数名其实就是指向函数的变量

#传入函数  下面的是一个最简单的高阶函数
def add(x, y, f):
    return f(x) + f(y)

print(add(-5, 11, abs))


# 把函数作为参数传入，这样的函数称为高阶函数， 函数式编程就是指这种高度抽象的编程范式
